<table class="configuration table table-bordered">
    <thead>
        <tr>
            <th class="text-left" style="width: 20%">Key</th>
            <th class="text-left" style="width: 15%">Default</th>
            <th class="text-left" style="width: 10%">Type</th>
            <th class="text-left" style="width: 55%">Description</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td><h5>execution.batch.adaptive.auto-parallelism.avg-data-volume-per-task</h5></td>
            <td style="word-wrap: break-word;">16 mb</td>
            <td>MemorySize</td>
            <td>The average size of data volume to expect each task instance to process if <code class="highlighter-rouge">jobmanager.scheduler</code> has been set to <code class="highlighter-rouge">AdaptiveBatch</code>. Note that when data skew occurs or the decided parallelism reaches the <code class="highlighter-rouge">execution.batch.adaptive.auto-parallelism.max-parallelism</code> (due to too much data), the data actually processed by some tasks may far exceed this value.</td>
        </tr>
        <tr>
            <td><h5>execution.batch.adaptive.auto-parallelism.default-source-parallelism</h5></td>
            <td style="word-wrap: break-word;">(none)</td>
            <td>Integer</td>
            <td>The default parallelism of source vertices or the upper bound of source parallelism to set adaptively if <code class="highlighter-rouge">jobmanager.scheduler</code> has been set to <code class="highlighter-rouge">AdaptiveBatch</code>. Note that <code class="highlighter-rouge">execution.batch.adaptive.auto-parallelism.max-parallelism</code> will be used if this configuration is not configured. If <code class="highlighter-rouge">execution.batch.adaptive.auto-parallelism.max-parallelism</code> is not set either, then the default parallelism set via <code class="highlighter-rouge">parallelism.default</code> will be used instead.</td>
        </tr>
        <tr>
            <td><h5>execution.batch.adaptive.auto-parallelism.enabled</h5></td>
            <td style="word-wrap: break-word;">true</td>
            <td>Boolean</td>
            <td>If true, Flink will automatically decide the parallelism of operators in batch jobs.</td>
        </tr>
        <tr>
            <td><h5>execution.batch.adaptive.auto-parallelism.max-parallelism</h5></td>
            <td style="word-wrap: break-word;">128</td>
            <td>Integer</td>
            <td>The upper bound of allowed parallelism to set adaptively if <code class="highlighter-rouge">jobmanager.scheduler</code> has been set to <code class="highlighter-rouge">AdaptiveBatch</code></td>
        </tr>
        <tr>
            <td><h5>execution.batch.adaptive.auto-parallelism.min-parallelism</h5></td>
            <td style="word-wrap: break-word;">1</td>
            <td>Integer</td>
            <td>The lower bound of allowed parallelism to set adaptively if <code class="highlighter-rouge">jobmanager.scheduler</code> has been set to <code class="highlighter-rouge">AdaptiveBatch</code></td>
        </tr>
        <tr>
            <td><h5>execution.batch.job-recovery.enabled</h5></td>
            <td style="word-wrap: break-word;">false</td>
            <td>Boolean</td>
            <td>A flag to enable or disable the job recovery. If enabled, batch jobs can resume with previously generated intermediate results after job master restarts due to failures, thereby preserving the progress.</td>
        </tr>
        <tr>
            <td><h5>execution.batch.job-recovery.previous-worker.recovery.timeout</h5></td>
            <td style="word-wrap: break-word;">30 s</td>
            <td>Duration</td>
            <td>The timeout for a new job master to wait for the previous worker to reconnect.A reconnected worker will transmit the details of its produced intermediate results to the new job master, enabling the job master to reuse these results.</td>
        </tr>
        <tr>
            <td><h5>execution.batch.job-recovery.snapshot.min-pause</h5></td>
            <td style="word-wrap: break-word;">3 min</td>
            <td>Duration</td>
            <td>The minimal pause between snapshots taken by operator coordinator or other components. It is used to avoid performance degradation due to excessive snapshot frequency.</td>
        </tr>
        <tr>
            <td><h5>execution.batch.speculative.block-slow-node-duration</h5></td>
            <td style="word-wrap: break-word;">1 min</td>
            <td>Duration</td>
            <td>Controls how long an detected slow node should be blocked for.</td>
        </tr>
        <tr>
            <td><h5>execution.batch.speculative.enabled</h5></td>
            <td style="word-wrap: break-word;">false</td>
            <td>Boolean</td>
            <td>Controls whether to enable speculative execution.</td>
        </tr>
        <tr>
            <td><h5>execution.batch.speculative.max-concurrent-executions</h5></td>
            <td style="word-wrap: break-word;">2</td>
            <td>Integer</td>
            <td>Controls the maximum number of execution attempts of each operator that can execute concurrently, including the original one and speculative ones.</td>
        </tr>
        <tr>
            <td><h5>job-event.store.write-buffer.flush-interval</h5></td>
            <td style="word-wrap: break-word;">1 s</td>
            <td>Duration</td>
            <td>The flush interval of JobEventStore write buffers. Buffer contents will be flushed to external file system regularly with regard to this value.</td>
        </tr>
        <tr>
            <td><h5>job-event.store.write-buffer.size</h5></td>
            <td style="word-wrap: break-word;">1 mb</td>
            <td>MemorySize</td>
            <td>The size of the write buffer of JobEventStore. The content will be flushed to external file system once the buffer is full</td>
        </tr>
        <tr>
            <td><h5>jobmanager.adaptive-scheduler.executing.cooldown-after-rescaling</h5></td>
            <td style="word-wrap: break-word;">30 s</td>
            <td>Duration</td>
            <td>Determines the minimum time between scaling operations.</td>
        </tr>
        <tr>
            <td><h5>jobmanager.adaptive-scheduler.executing.resource-stabilization-timeout</h5></td>
            <td style="word-wrap: break-word;">1 min</td>
            <td>Duration</td>
            <td>Defines the duration the JobManager delays the scaling operation after a resource change if only sufficient resources are available. The scaling operation is performed immediately if the resources have changed and the desired resources are available. The timeout begins as soon as either the available resources or the job's resource requirements are changed.<br />The resource requirements of a running job can be changed using the <a href="{{.Site.BaseURL}}{{.Site.LanguagePrefix}}/docs/ops/rest_api/#jobs-jobid-resource-requirements-1">REST API endpoint</a>.</td>
        </tr>
        <tr>
            <td><h5>jobmanager.adaptive-scheduler.rescale-trigger.max-checkpoint-failures</h5></td>
            <td style="word-wrap: break-word;">2</td>
            <td>Integer</td>
            <td>The number of consecutive failed checkpoints that will trigger rescaling even in the absence of a completed checkpoint.</td>
        </tr>
        <tr>
            <td><h5>jobmanager.adaptive-scheduler.rescale-trigger.max-delay</h5></td>
            <td style="word-wrap: break-word;">(none)</td>
            <td>Duration</td>
            <td>The maximum time the JobManager will wait with evaluating previously observed events for rescaling (default: 0ms if checkpointing is disabled and the checkpointing interval multiplied by the by-1-incremented parameter value of jobmanager.adaptive-scheduler.rescale-trigger.max-checkpoint-failures if checkpointing is enabled).</td>
        </tr>
        <tr>
            <td><h5>jobmanager.adaptive-scheduler.submission.resource-stabilization-timeout</h5></td>
            <td style="word-wrap: break-word;">10 s</td>
            <td>Duration</td>
            <td>The resource stabilization timeout defines the time the JobManager will wait if fewer than the desired but sufficient resources are available during job submission. The timeout starts once sufficient resources for running the job are available. Once this timeout has passed, the job will start executing with the available resources.<br />If <code class="highlighter-rouge">scheduler-mode</code> is configured to <code class="highlighter-rouge">REACTIVE</code>, this configuration value will default to 0, so that jobs are starting immediately with the available resources.</td>
        </tr>
        <tr>
            <td><h5>jobmanager.adaptive-scheduler.submission.resource-wait-timeout</h5></td>
            <td style="word-wrap: break-word;">5 min</td>
            <td>Duration</td>
            <td>The maximum time the JobManager will wait to acquire all required resources after a job submission or restart. Once elapsed it will try to run the job with a lower parallelism, or fail if the minimum amount of resources could not be acquired.<br />Increasing this value will make the cluster more resilient against temporary resources shortages (e.g., there is more time for a failed TaskManager to be restarted).<br />Setting a negative duration will disable the resource timeout: The JobManager will wait indefinitely for resources to appear.<br />If <code class="highlighter-rouge">scheduler-mode</code> is configured to <code class="highlighter-rouge">REACTIVE</code>, this configuration value will default to a negative value to disable the resource timeout.</td>
        </tr>
        <tr>
            <td><h5>jobmanager.partition.hybrid.partition-data-consume-constraint</h5></td>
            <td style="word-wrap: break-word;">(none)</td>
            <td><p>Enum</p></td>
            <td>Controls the constraint that hybrid partition data can be consumed. Note that this option is allowed only when <code class="highlighter-rouge">jobmanager.scheduler</code> has been set to <code class="highlighter-rouge">AdaptiveBatch</code>. Accepted values are:<ul><li>'<code class="highlighter-rouge">ALL_PRODUCERS_FINISHED</code>': hybrid partition data can be consumed only when all producers are finished.</li><li>'<code class="highlighter-rouge">ONLY_FINISHED_PRODUCERS</code>': hybrid partition data can be consumed when its producer is finished.</li><li>'<code class="highlighter-rouge">UNFINISHED_PRODUCERS</code>': hybrid partition data can be consumed even if its producer is un-finished.</li></ul><br /><br />Possible values:<ul><li>"ALL_PRODUCERS_FINISHED"</li><li>"ONLY_FINISHED_PRODUCERS"</li><li>"UNFINISHED_PRODUCERS"</li></ul></td>
        </tr>
        <tr>
            <td><h5>jobmanager.scheduler</h5></td>
            <td style="word-wrap: break-word;">Default</td>
            <td><p>Enum</p></td>
            <td>Determines which scheduler implementation is used to schedule tasks. If this option is not explicitly set, batch jobs will use the 'AdaptiveBatch' scheduler as the default, while streaming jobs will default to the 'Default' scheduler. <br /><br />Possible values:<ul><li>"Default": Default scheduler</li><li>"Adaptive": Adaptive scheduler. More details can be found <a href="{{.Site.BaseURL}}{{.Site.LanguagePrefix}}/docs/deployment/elastic_scaling#adaptive-scheduler">here</a>.</li><li>"AdaptiveBatch": Adaptive batch scheduler. More details can be found <a href="{{.Site.BaseURL}}{{.Site.LanguagePrefix}}/docs/deployment/elastic_scaling#adaptive-batch-scheduler">here</a>.</li></ul></td>
        </tr>
        <tr>
            <td><h5>scheduler-mode</h5></td>
            <td style="word-wrap: break-word;">(none)</td>
            <td><p>Enum</p></td>
            <td>Determines the mode of the scheduler. Note that <code class="highlighter-rouge">scheduler-mode</code>=<code class="highlighter-rouge">REACTIVE</code> is only supported by standalone application deployments, not by active resource managers (YARN, Kubernetes) or session clusters.<br /><br />Possible values:<ul><li>"REACTIVE"</li></ul></td>
        </tr>
        <tr>
            <td><h5>slot.idle.timeout</h5></td>
            <td style="word-wrap: break-word;">50 s</td>
            <td>Duration</td>
            <td>The timeout for a idle slot in Slot Pool.</td>
        </tr>
        <tr>
            <td><h5>slot.request.max-interval</h5></td>
            <td style="word-wrap: break-word;">20 ms</td>
            <td>Duration</td>
            <td>The max interval duration for slots request.</td>
        </tr>
        <tr>
            <td><h5>slot.request.timeout</h5></td>
            <td style="word-wrap: break-word;">5 min</td>
            <td>Duration</td>
            <td>The timeout for requesting a slot from Slot Pool.</td>
        </tr>
        <tr>
            <td><h5>slotmanager.max-total-resource.cpu</h5></td>
            <td style="word-wrap: break-word;">(none)</td>
            <td>Double</td>
            <td>Maximum cpu cores the Flink cluster allocates for slots. Resources for JobManager and TaskManager framework are excluded. If not configured, it will be derived from 'slotmanager.number-of-slots.max'.</td>
        </tr>
        <tr>
            <td><h5>slotmanager.max-total-resource.memory</h5></td>
            <td style="word-wrap: break-word;">(none)</td>
            <td>MemorySize</td>
            <td>Maximum memory size the Flink cluster allocates for slots. Resources for JobManager and TaskManager framework are excluded. If not configured, it will be derived from 'slotmanager.number-of-slots.max'.</td>
        </tr>
        <tr>
            <td><h5>slotmanager.min-total-resource.cpu</h5></td>
            <td style="word-wrap: break-word;">(none)</td>
            <td>Double</td>
            <td>Minimum cpu cores the Flink cluster allocates for slots. Resources for JobManager and TaskManager framework are excluded. If not configured, it will be derived from 'slotmanager.number-of-slots.min'.</td>
        </tr>
        <tr>
            <td><h5>slotmanager.min-total-resource.memory</h5></td>
            <td style="word-wrap: break-word;">(none)</td>
            <td>MemorySize</td>
            <td>Minimum memory size the Flink cluster allocates for slots. Resources for JobManager and TaskManager framework are excluded. If not configured, it will be derived from 'slotmanager.number-of-slots.min'.</td>
        </tr>
        <tr>
            <td><h5>slotmanager.number-of-slots.max</h5></td>
            <td style="word-wrap: break-word;">infinite</td>
            <td>Integer</td>
            <td>Defines the maximum number of slots that the Flink cluster allocates. This configuration option is meant for limiting the resource consumption for batch workloads. It is not recommended to configure this option for streaming workloads, which may fail if there are not enough slots. Note that this configuration option does not take effect for standalone clusters, where how many slots are allocated is not controlled by Flink.</td>
        </tr>
        <tr>
            <td><h5>slotmanager.number-of-slots.min</h5></td>
            <td style="word-wrap: break-word;">0</td>
            <td>Integer</td>
            <td>Defines the minimum number of slots that the Flink cluster allocates. This configuration option is meant for cluster to initialize certain workers in best efforts when starting. This can be used to speed up a job startup process. Note that this configuration option does not take effect for standalone clusters, where how many slots are allocated is not controlled by Flink.</td>
        </tr>
        <tr>
            <td><h5>slow-task-detector.check-interval</h5></td>
            <td style="word-wrap: break-word;">1 s</td>
            <td>Duration</td>
            <td>The interval to check slow tasks.</td>
        </tr>
        <tr>
            <td><h5>slow-task-detector.execution-time.baseline-lower-bound</h5></td>
            <td style="word-wrap: break-word;">1 min</td>
            <td>Duration</td>
            <td>The lower bound of slow task detection baseline.</td>
        </tr>
        <tr>
            <td><h5>slow-task-detector.execution-time.baseline-multiplier</h5></td>
            <td style="word-wrap: break-word;">1.5</td>
            <td>Double</td>
            <td>The multiplier to calculate the slow tasks detection baseline. Given that the parallelism is N and the ratio is R, define T as the median of the first N*R finished tasks' execution time. The baseline will be T*M, where M is the multiplier of the baseline. Note that the execution time will be weighted with the task's input bytes to ensure the accuracy of the detection if data skew occurs.</td>
        </tr>
        <tr>
            <td><h5>slow-task-detector.execution-time.baseline-ratio</h5></td>
            <td style="word-wrap: break-word;">0.75</td>
            <td>Double</td>
            <td>The finished execution ratio threshold to calculate the slow tasks detection baseline. Given that the parallelism is N and the ratio is R, define T as the median of the first N*R finished tasks' execution time. The baseline will be T*M, where M is the multiplier of the baseline. Note that the execution time will be weighted with the task's input bytes to ensure the accuracy of the detection if data skew occurs.</td>
        </tr>
        <tr>
            <td><h5>taskmanager.load-balance.mode</h5></td>
            <td style="word-wrap: break-word;">NONE</td>
            <td><p>Enum</p></td>
            <td>Mode for the load-balance allocation strategy across all available <code class="highlighter-rouge">TaskManagers</code>.<ul><li>The <code class="highlighter-rouge">SLOTS</code> mode tries to spread out the slots evenly across all available <code class="highlighter-rouge">TaskManagers</code>.</li><li>The <code class="highlighter-rouge">NONE</code> mode is the default mode without any specified strategy.</li></ul><br /><br />Possible values:<ul><li>"NONE"</li><li>"SLOTS"</li></ul></td>
        </tr>
    </tbody>
</table>
